home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Tool Chest / !Interfaces / Universal Interfaces 2.0a1 / PInterfaces / Controls.p < prev    next >
Encoding:
Text File  |  1994-07-17  |  11.2 KB  |  443 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        Controls.p
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a1.  ETO #15, MPW prerelease.  Sunday, July 17, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. }
  16.  
  17. {$IFC UNDEFINED UsingIncludes}
  18. {$SETC UsingIncludes := 0}
  19. {$ENDC}
  20.  
  21. {$IFC NOT UsingIncludes}
  22.  UNIT Controls;
  23.  INTERFACE
  24. {$ENDC}
  25.  
  26. {$IFC UNDEFINED __CONTROLS__}
  27. {$SETC __CONTROLS__ := 1}
  28.  
  29. {$I+}
  30. {$SETC ControlsIncludes := UsingIncludes}
  31. {$SETC UsingIncludes := 1}
  32.  
  33.  
  34. {$IFC UNDEFINED __TYPES__}
  35. {$I Types.p}
  36. {$ENDC}
  37. {    ConditionalMacros.p                                            }
  38.  
  39. {$IFC UNDEFINED __QUICKDRAW__}
  40. {$I Quickdraw.p}
  41. {$ENDC}
  42. {    MixedMode.p                                                    }
  43. {    QuickdrawText.p                                                }
  44.  
  45. {$IFC UNDEFINED __MENUS__}
  46. {$I Menus.p}
  47. {$ENDC}
  48. {    Memory.p                                                    }
  49.  
  50. {$PUSH}
  51. {$ALIGN MAC68K}
  52. {$LibExport+}
  53.  
  54. CONST
  55.     pushButProc                    = 0;
  56.     checkBoxProc                = 1;
  57.     radioButProc                = 2;
  58.     useWFont                    = 8;
  59.     scrollBarProc                = 16;
  60.     popupMenuProc                = 1008;                            { 63 * 16 }
  61.  
  62.     inLabel                        = 1;
  63.     inMenu                        = 2;
  64.     inTriangle                    = 4;
  65.  
  66.     
  67. TYPE
  68. ControlPartCode = UInt8;
  69.  
  70.  
  71. CONST
  72.     kNoHiliteControlPart        = 0;
  73.     kInButtonControlPart        = 10;
  74.     kInCheckBoxControlPart        = 11;
  75.     kInUpButtonControlPart        = 20;
  76.     kInDownButtonControlPart    = 21;
  77.     kInPageUpControlPart        = 22;
  78.     kInPageDownControlPart        = 23;
  79.     kInIndicatorControlPart        = 129;
  80.     kReservedControlPart        = 254;
  81.     kControlInactiveControlPart    = 255;
  82.  
  83.     inButton                    = 10;
  84.     inCheckBox                    = 11;
  85.     inUpButton                    = 20;
  86.     inDownButton                = 21;
  87.     inPageUp                    = 22;
  88.     inPageDown                    = 23;
  89.     inThumb                        = 129;
  90.  
  91.     popupFixedWidth                = 1 * (2**(0));
  92.     popupVariableWidth            = 1 * (2**(1));
  93.     popupUseAddResMenu            = 1 * (2**(2));
  94.     popupUseWFont                = 1 * (2**(3));
  95.  
  96.     popupTitleBold                = 1 * (2**(8));
  97.     popupTitleItalic            = 1 * (2**(9));
  98.     popupTitleUnderline            = 1 * (2**(10));
  99.     popupTitleOutline            = 1 * (2**(11));
  100.     popupTitleShadow            = 1 * (2**(12));
  101.     popupTitleCondense            = 1 * (2**(13));
  102.     popupTitleExtend            = 1 * (2**(14));
  103.     popupTitleNoStyle            = 1 * (2**(15));
  104.  
  105.     popupTitleLeftJust            = $00000000;
  106.     popupTitleCenterJust        = $00000001;
  107.     popupTitleRightJust            = $000000FF;
  108.  
  109. {
  110. axis constraints for DragGrayRgn call}
  111.     noConstraint                = kNoConstraint;
  112.     hAxisOnly                    = 1;
  113.     vAxisOnly                    = 2;
  114.  
  115.     
  116. TYPE
  117. ControlDefProcMessage = SInt16;
  118.  
  119.  
  120. CONST
  121.     drawCntl                    = 0;
  122.     testCntl                    = 1;
  123.     calcCRgns                    = 2;
  124.     initCntl                    = 3;
  125.     dispCntl                    = 4;
  126.     posCntl                        = 5;
  127.     thumbCntl                    = 6;
  128.     dragCntl                    = 7;
  129.     autoTrack                    = 8;
  130.     calcCntlRgn                    = 10;
  131.     calcThumbRgn                = 11;
  132.     drawThumbOutline            = 12;
  133.  
  134.     cFrameColor                    = 0;
  135.     cBodyColor                    = 1;
  136.     cTextColor                    = 2;
  137.     cThumbColor                    = 3;
  138.  
  139. {
  140.     Set STRICT_CONTROLS to 1 to make sure your code 
  141.     doesn't access the control records directly
  142. }
  143. {$IFC UNDEFINED STRICT_CONTROLS }
  144. {$SETC STRICT_CONTROLS := 0}
  145. {$ENDC}
  146. {$IFC STRICT_CONTROLS }
  147.     
  148. TYPE
  149. ControlRef = Ptr;
  150.  
  151.     ControlHandle = ControlRef;
  152.  
  153. {$ELSEC}
  154.     
  155. TYPE
  156. ControlPtr = ^ControlRecord;
  157.     ControlHandle = ^ControlPtr;
  158.  
  159.     ControlRef = ControlHandle;
  160.  
  161. {$ENDC}
  162.     ControlDefProcPtr = ProcPtr;  { FUNCTION ControlDef(varCode: INTEGER; theControl: ControlRef; message: INTEGER; param: LONGINT): LONGINT; }
  163.     ControlActionProcPtr = ProcPtr;  { PROCEDURE ControlAction(theControl: ControlRef; partCode: INTEGER); }
  164.     ControlDefUPP = UniversalProcPtr;
  165.     ControlActionUPP = UniversalProcPtr;
  166.  
  167. {$IFC NOT STRICT_CONTROLS }
  168.     ControlRecord = PACKED RECORD
  169.         nextControl:            ControlRef;
  170.         contrlOwner:            WindowRef;
  171.         contrlRect:                Rect;
  172.         contrlVis:                UInt8;
  173.         contrlHilite:            UInt8;
  174.         contrlValue:            INTEGER;
  175.         contrlMin:                INTEGER;
  176.         contrlMax:                INTEGER;
  177.         contrlDefProc:            Handle;
  178.         contrlData:                Handle;
  179.         contrlAction:            ControlActionUPP;
  180.         contrlRfCon:            LONGINT;
  181.         contrlTitle:            Str255;
  182.     END;
  183. {$ENDC}
  184.     PopupPrivateData = RECORD
  185.         mHandle:                MenuHandle;                                {popup menu handle}
  186.         mID:                    INTEGER;                                {popup menu ID}
  187.     END;
  188.     PopupPrivateDataPtr = ^PopupPrivateData;
  189.     PopupPrivateDataHandle = ^PopupPrivateDataPtr;
  190.  
  191.     CtlCTab = RECORD
  192.         ccSeed:                    LONGINT;                                {reserved}
  193.         ccRider:                INTEGER;                                {see what you have done - reserved}
  194.         ctSize:                    INTEGER;                                {usually 3 for controls}
  195.         ctTable:                ARRAY [0..3] OF ColorSpec;
  196.     END;
  197.     CCTabPtr = ^CtlCTab;
  198.     CCTabHandle = ^CCTabPtr;
  199.  
  200. {$IFC NOT STRICT_CONTROLS }
  201.     AuxCtlRec = RECORD
  202.         acNext:                    Handle;
  203.         acOwner:                ControlRef;
  204.         acCTable:                CCTabHandle;
  205.         acFlags:                INTEGER;
  206.         acReserved:                LONGINT;
  207.         acRefCon:                LONGINT;
  208.     END;
  209.     AuxCtlPtr = ^AuxCtlRec;
  210.     AuxCtlHandle = ^AuxCtlPtr;
  211.  
  212. {$ENDC}
  213. CONST
  214.     uppControlDefProcInfo = $00003BB0; { FUNCTION (2 byte param, 4 byte param, 2 byte param, 4 byte param): 4 byte result; }
  215.     uppControlActionProcInfo = $000002C0; { PROCEDURE (4 byte param, 2 byte param); }
  216.  
  217. FUNCTION NewControlDefProc(userRoutine: ControlDefProcPtr): ControlDefUPP;
  218.     {$IFC NOT GENERATINGCFM }
  219.     INLINE $2E9F;
  220.     {$ENDC}
  221.  
  222. FUNCTION NewControlActionProc(userRoutine: ControlActionProcPtr): ControlActionUPP;
  223.     {$IFC NOT GENERATINGCFM }
  224.     INLINE $2E9F;
  225.     {$ENDC}
  226.  
  227. FUNCTION CallControlDefProc(varCode: INTEGER; theControl: ControlRef; message: INTEGER; param: LONGINT; userRoutine: ControlDefUPP): LONGINT;
  228.     {$IFC NOT GENERATINGCFM}
  229.     INLINE $205F, $4E90;
  230.     {$ENDC}
  231.  
  232. PROCEDURE CallControlActionProc(theControl: ControlRef; partCode: INTEGER; userRoutine: ControlActionUPP);
  233.     {$IFC NOT GENERATINGCFM}
  234.     INLINE $205F, $4E90;
  235.     {$ENDC}
  236.  
  237. FUNCTION NewControl(theWindow: WindowRef; boundsRect: Rect; title: ConstStr255Param; visible: BOOLEAN; value: INTEGER; min: INTEGER; max: INTEGER; procID: INTEGER; refCon: LONGINT): ControlRef;
  238.     {$IFC NOT GENERATINGCFM}
  239.     INLINE $A954;
  240.     {$ENDC}
  241. PROCEDURE SetControlTitle(theControl: ControlRef; title: ConstStr255Param);
  242.     {$IFC NOT GENERATINGCFM}
  243.     INLINE $A95F;
  244.     {$ENDC}
  245. PROCEDURE GetControlTitle(theControl: ControlRef; VAR title: Str255);
  246.     {$IFC NOT GENERATINGCFM}
  247.     INLINE $A95E;
  248.     {$ENDC}
  249. FUNCTION GetNewControl(controlID: INTEGER; owner: WindowRef): ControlRef;
  250.     {$IFC NOT GENERATINGCFM}
  251.     INLINE $A9BE;
  252.     {$ENDC}
  253. PROCEDURE DisposeControl(theControl: ControlRef);
  254.     {$IFC NOT GENERATINGCFM}
  255.     INLINE $A955;
  256.     {$ENDC}
  257. PROCEDURE KillControls(theWindow: WindowRef);
  258.     {$IFC NOT GENERATINGCFM}
  259.     INLINE $A956;
  260.     {$ENDC}
  261. PROCEDURE HideControl(theControl: ControlRef);
  262.     {$IFC NOT GENERATINGCFM}
  263.     INLINE $A958;
  264.     {$ENDC}
  265. PROCEDURE ShowControl(theControl: ControlRef);
  266.     {$IFC NOT GENERATINGCFM}
  267.     INLINE $A957;
  268.     {$ENDC}
  269. PROCEDURE DrawControls(theWindow: WindowRef);
  270.     {$IFC NOT GENERATINGCFM}
  271.     INLINE $A969;
  272.     {$ENDC}
  273. PROCEDURE Draw1Control(theControl: ControlRef);
  274.     {$IFC NOT GENERATINGCFM}
  275.     INLINE $A96D;
  276.     {$ENDC}
  277. PROCEDURE HiliteControl(theControl: ControlRef; hiliteState: INTEGER);
  278.     {$IFC NOT GENERATINGCFM}
  279.     INLINE $A95D;
  280.     {$ENDC}
  281. PROCEDURE UpdateControls(theWindow: WindowRef; updateRgn: RgnHandle);
  282.     {$IFC NOT GENERATINGCFM}
  283.     INLINE $A953;
  284.     {$ENDC}
  285. PROCEDURE MoveControl(theControl: ControlRef; h: INTEGER; v: INTEGER);
  286.     {$IFC NOT GENERATINGCFM}
  287.     INLINE $A959;
  288.     {$ENDC}
  289. PROCEDURE SizeControl(theControl: ControlRef; w: INTEGER; h: INTEGER);
  290.     {$IFC NOT GENERATINGCFM}
  291.     INLINE $A95C;
  292.     {$ENDC}
  293. PROCEDURE SetControlValue(theControl: ControlRef; theValue: INTEGER);
  294.     {$IFC NOT GENERATINGCFM}
  295.     INLINE $A963;
  296.     {$ENDC}
  297. FUNCTION GetControlValue(theControl: ControlRef): INTEGER;
  298.     {$IFC NOT GENERATINGCFM}
  299.     INLINE $A960;
  300.     {$ENDC}
  301. PROCEDURE SetControlMinimum(theControl: ControlRef; minValue: INTEGER);
  302.     {$IFC NOT GENERATINGCFM}
  303.     INLINE $A964;
  304.     {$ENDC}
  305. FUNCTION GetControlMinimum(theControl: ControlRef): INTEGER;
  306.     {$IFC NOT GENERATINGCFM}
  307.     INLINE $A961;
  308.     {$ENDC}
  309. PROCEDURE SetControlMaximum(theControl: ControlRef; maxValue: INTEGER);
  310.     {$IFC NOT GENERATINGCFM}
  311.     INLINE $A965;
  312.     {$ENDC}
  313. FUNCTION GetControlMaximum(theControl: ControlRef): INTEGER;
  314.     {$IFC NOT GENERATINGCFM}
  315.     INLINE $A962;
  316.     {$ENDC}
  317. {$IFC NOT STRICT_CONTROLS }
  318. FUNCTION GetAuxiliaryControlRecord(theControl: ControlRef; VAR acHndl: AuxCtlHandle): BOOLEAN;
  319.     {$IFC NOT GENERATINGCFM}
  320.     INLINE $AA44;
  321.     {$ENDC}
  322. {$ENDC}
  323. PROCEDURE SetControlReference(theControl: ControlRef; data: LONGINT);
  324.     {$IFC NOT GENERATINGCFM}
  325.     INLINE $A95B;
  326.     {$ENDC}
  327. FUNCTION GetControlReference(theControl: ControlRef): LONGINT;
  328.     {$IFC NOT GENERATINGCFM}
  329.     INLINE $A95A;
  330.     {$ENDC}
  331. PROCEDURE SetControlAction(theControl: ControlRef; actionProc: ControlActionUPP);
  332.     {$IFC NOT GENERATINGCFM}
  333.     INLINE $A96B;
  334.     {$ENDC}
  335. FUNCTION GetControlAction(theControl: ControlRef): ControlActionUPP;
  336.     {$IFC NOT GENERATINGCFM}
  337.     INLINE $A96A;
  338.     {$ENDC}
  339. PROCEDURE DragControl(theControl: ControlRef; startPt: Point; limitRect: Rect; slopRect: Rect; axis: INTEGER);
  340.     {$IFC NOT GENERATINGCFM}
  341.     INLINE $A967;
  342.     {$ENDC}
  343. FUNCTION TestControl(theControl: ControlRef; thePt: Point): INTEGER;
  344.     {$IFC NOT GENERATINGCFM}
  345.     INLINE $A966;
  346.     {$ENDC}
  347. FUNCTION FindControl(thePoint: Point; theWindow: WindowRef; VAR theControl: ControlRef): INTEGER;
  348.     {$IFC NOT GENERATINGCFM}
  349.     INLINE $A96C;
  350.     {$ENDC}
  351. PROCEDURE SetControlColor(theControl: ControlRef; newColorTable: CCTabHandle);
  352.     {$IFC NOT GENERATINGCFM}
  353.     INLINE $AA43;
  354.     {$ENDC}
  355. FUNCTION GetControlVariant(theControl: ControlRef): INTEGER;
  356.     {$IFC NOT GENERATINGCFM}
  357.     INLINE $A809;
  358.     {$ENDC}
  359. {
  360.     When using the TrackControl() call when tracking an indicator, the
  361.     actionProc parameter (type ControlActionUPP) should be replaced by
  362.     a parameter of type DragGrayRgnUPP (defined in Quickdraw.<header>).
  363. }
  364. FUNCTION TrackControl(theControl: ControlRef; thePoint: Point; actionProc: ControlActionUPP): INTEGER;
  365.     {$IFC NOT GENERATINGCFM}
  366.     INLINE $A968;
  367.     {$ENDC}
  368. {$IFC OLDROUTINENAMES }
  369. PROCEDURE SetCTitle(theControl: ControlRef; title: ConstStr255Param);
  370.     {$IFC NOT GENERATINGCFM}
  371.     INLINE $A95F;
  372.     {$ENDC}
  373. PROCEDURE GetCTitle(theControl: ControlRef; VAR title: Str255);
  374.     {$IFC NOT GENERATINGCFM}
  375.     INLINE $A95E;
  376.     {$ENDC}
  377. PROCEDURE UpdtControl(theWindow: WindowRef; updateRgn: RgnHandle);
  378.     {$IFC NOT GENERATINGCFM}
  379.     INLINE $A953;
  380.     {$ENDC}
  381. {$IFC NOT STRICT_CONTROLS }
  382. PROCEDURE SetCtlValue(theControl: ControlRef; theValue: INTEGER);
  383.     {$IFC NOT GENERATINGCFM}
  384.     INLINE $A963;
  385.     {$ENDC}
  386. FUNCTION GetCtlValue(theControl: ControlRef): INTEGER;
  387.     {$IFC NOT GENERATINGCFM}
  388.     INLINE $A960;
  389.     {$ENDC}
  390. PROCEDURE SetCtlMin(theControl: ControlRef; minValue: INTEGER);
  391.     {$IFC NOT GENERATINGCFM}
  392.     INLINE $A964;
  393.     {$ENDC}
  394. FUNCTION GetCtlMin(theControl: ControlRef): INTEGER;
  395.     {$IFC NOT GENERATINGCFM}
  396.     INLINE $A961;
  397.     {$ENDC}
  398. PROCEDURE SetCtlMax(theControl: ControlRef; maxValue: INTEGER);
  399.     {$IFC NOT GENERATINGCFM}
  400.     INLINE $A965;
  401.     {$ENDC}
  402. FUNCTION GetCtlMax(theControl: ControlRef): INTEGER;
  403.     {$IFC NOT GENERATINGCFM}
  404.     INLINE $A962;
  405.     {$ENDC}
  406. {$ENDC}
  407. PROCEDURE SetCRefCon(theControl: ControlRef; data: LONGINT);
  408.     {$IFC NOT GENERATINGCFM}
  409.     INLINE $A95B;
  410.     {$ENDC}
  411. FUNCTION GetCRefCon(theControl: ControlRef): LONGINT;
  412.     {$IFC NOT GENERATINGCFM}
  413.     INLINE $A95A;
  414.     {$ENDC}
  415. PROCEDURE SetCtlAction(theControl: ControlRef; actionProc: ControlActionUPP);
  416.     {$IFC NOT GENERATINGCFM}
  417.     INLINE $A96B;
  418.     {$ENDC}
  419. FUNCTION GetCtlAction(theControl: ControlRef): ControlActionUPP;
  420.     {$IFC NOT GENERATINGCFM}
  421.     INLINE $A96A;
  422.     {$ENDC}
  423. PROCEDURE SetCtlColor(theControl: ControlRef; newColorTable: CCTabHandle);
  424.     {$IFC NOT GENERATINGCFM}
  425.     INLINE $AA43;
  426.     {$ENDC}
  427. FUNCTION GetCVariant(theControl: ControlRef): INTEGER;
  428.     {$IFC NOT GENERATINGCFM}
  429.     INLINE $A809;
  430.     {$ENDC}
  431. {$ENDC}
  432.  
  433. {$ALIGN RESET}
  434. {$POP}
  435.  
  436. {$SETC UsingIncludes := ControlsIncludes}
  437.  
  438. {$ENDC} {__CONTROLS__}
  439.  
  440. {$IFC NOT UsingIncludes}
  441.  END.
  442. {$ENDC}
  443.